import Vue from 'vue'
import App from './App'
import uView from "uview-ui"
import helper from 'common/helper.js';
import router from './router';
import share from "common/share.js"
import tools from '@/common/utils/util.js';
Vue.mixin(share)
import {
	RouterMount
} from 'uni-simple-router';

// 引入插件
import request from '@/common/request.js'
uni.$showMsg = (title = "数据加载失败!", duration = 2000) => {
	uni.showToast({
		title,
		duration,
		icon: "none"
	})
	
}
uni.$showLoading = (title = '') => {
	uni.showLoading({
		title,
		mask: true
	});
}
/**
 *  全局方法
 * @method msg 全局提示
 * @method load 全局loading
 * @method prePage 页面栈
 * @method add 加法精度计算
 * @method sub 减法精度计算
 * @method mul 乘法精度计算
 * @method div 除法精度计算
 * @method sys 系统配置
 * @method title 动态修改标题
 * @method numFormat 数字格式化
 * @method timeFormat 时间格式化
 * @method timeToDate 社交时间友好
 * @method guid 唯一值
 * @method to 打开链接navigateTo 
 * @method on 打开任意链接switchTab
 * @method back 返回上一级
 * @method phone 拨打电话
 * @method routerTo 跳转
 * @method conver 格式化kb
 * @method checkImgHttp 检测图片协议
 * @method chooseImage 图片处理-选择图片
 * @method uploadImage 图片处理-上传图片
 * @method previewImage  图片处理-预览图片
 * @method getImageInfo 图片处理-获取图片信息
 * @method throttle 节流
 * @method debounce 防抖
 * @method numberToChinese 将阿拉伯数字翻译成中文的大写数字   四仟五百六十二
 * @method checkPwd 检测密码强度
 * @method changeToChinese  将数字转换为大写金额   肆仟伍佰陆拾贰元整
 * @method checkStr 正则验证
 * 
 */
Vue.prototype.l = tools;

Vue.prototype.$http = 'https://jiaxiao.qianjitianxia.com/upload/'
// 全局配置
request.setConfig({
	// baseUrl: 'https://jiaxiao.qianjitianxia.com', // 此为测试地址，需加入到域名白名单，或者更改为您自己的线上地址即可
	baseUrl: 'https://jiaxiao.qianjitianxia.com',
	dataType: 'json', // 可删除，默认为json
	responseType: 'text', // 可删除，默认为text
	// 设置请求头，支持所有请求头设置，也可不设置，去掉header就行
	// header: {
	//   'token': 'token from global',
	//   'content-type': 'application/json' 
	// }
})

// 设置请求拦截器
request.interceptors.request(config => {
	// 配置参数和全局配置相同，此优先级最高，会覆盖在其他地方的相同配置参数

	// 追加请求头，推荐
	config.header['content-type'] = 'application/json';
	config.header['XX-Wxapp-AppId'] = helper.appid;
	config.header['XX-Device-Type'] = 'wxapp';

	//从缓存中取出token
	// if (helper.myToken == "" || helper.myToken == null || helper.myToken.length < 1) {
	// 	uni.getStorage({
	// 		key: 'token',
	// 		success(res) {
	// 			if (res.data == null || res.data.length < 1) {
	// 				console.log('没有token,去登陆');
	// 				return router.push({
	// 					name: 'login'
	// 				})
	// 			} else {
	// 				console.log("有token,已登陆");
	// 				helper.myToken = res.data;
	// 			}
	// 		},
	// 		fail() {
	// 			console.log('没有token,去登陆');
	// 			return router.push({
	// 				name: 'login'
	// 			})
	// 		}
	// 	})
	// }
	config.header['XX-Token'] = helper.myToken;

	// 覆盖请求头
	// config.header = {
	// 'content-type': 'application/json',
	// 'token': 'token from interceptors'
	// }

	// return false; // 终止请求
	// return Promise.reject('error from request interceptors'); // 向外层抛出错误，用catch捕获
	return config; // 返回修改后的配置，如未修改也需添加这行
})

// 设置响应拦截器
request.interceptors.response(res => {
	// 接收请求，执行响应操作
	// 您的逻辑......

	// return false;    // 阻止返回,页面不会接收返回值
	// return {message: '自定义值，来自拦截器'};   // 返回您自定义的值，将覆盖原始返回值
	// return Promise.reject('error from response interceptors') // 向外层抛出错误，用catch捕获

	if (res.data.code == 10001) {
		console.log('后端返回10001');
		router.push({
			name: 'login'
		})
	};

	return res; // 原样返回
})

// // 挂载到全局vue实例上，在页面中可以使用this.$request调用request实例下相应方法
Vue.prototype.$request = request;

Vue.use(uView);
// Vue.use(Router);

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
	...App
})
app.$mount()
